#lang sicp 

(define (sqrt x)
  (define (sqrt-iter guess x)
    (if (good-enough? guess x)
        guess
        (sqrt-iter (improve guess x)
                  x)))

  (define (improve guess x)
    (average guess (/ x guess)))

  (define (average a b)
    (/ (+ a b) 2.0))

  (define (good-enough? guess x)
    (< (abs (- (* guess guess)
              x))
       0.001))

  (sqrt-iter 1 x))

(sqrt 9999)